package a_direct;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import org.junit.Test;

/**
 * @ClassName: Producer
 * @Author: liugui
 * @Date: 2020-12-01 21:39
 * @Description：消息生产者
 **/
public class Producer {

    @Test
    public void sendMessage() throws Exception{
        //1.创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //2.设置连接参数
        // factory.setVirtualHost();  默认= /
        factory.setHost("127.0.0.1");
        factory.setPort(5672);
        factory.setUsername("admin");
        factory.setPassword("123456");
        //3.从连接工厂 创建连接
        Connection connection = factory.newConnection();
        //4.创建通道
        Channel channel = connection.createChannel();
        /**
         * 5.绑定队列
         * 参数1：队列名  如果发送消息时，队列在MQ里面不存在，它会创建一个新的队列
         * 参数2：是否持久化 如果为false，当MQ重启时，消息会丢失
         * 参数3：是否独享 ，true代表只有当前连接可以访问这个队列
         * 参数4：是否自动删除，是否用完之后 删除该队列
         * 参数5：其他参数
         */
        channel.queueDeclare("hello",true,false,false,null);
        /**
         * 6.发消息
         * 参数1：交换机
         * 参数2：队列名=路由key
         * 参数3：相关属性
         * 参数4：消息体
         */
        channel.basicPublish("","hello",null,"hello rabbitmq".getBytes());
        //7.关闭通道
        channel.close();
        connection.close();
        System.out.println("消息发送成功");


    }

}
